package HTTP;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
//HTTP request  web01三个包的顺序方式: 先HTTP再web01最后是request
/*
   HTTP请求消息数据格式: (在浏览器中按下F12可以查看以下数据)
      1:请求行
         * 请求方式:
            *HTTP协议有七种请求方式,常用的有两种
              *GET:
                 1:请求参数在请求行中,在url后面(重点)
                 2:请求的url长度没有限制的
                 3:不太安全
              *POST:
                 1:请求参数在请求体中(重点)
                 2:请求的url长度没有限制的
                 3:相对安全
      2:请求头(客户端浏览器告诉服务器一些信息)
         *常见的请求头:
              1: User-Agent : 浏览器告诉服务器,我访问你使用的浏览器版本信息
                    *可以在服务器端获取该头的信息,解决浏览器兼容性问题
              2: Referer : http://localhost/login.html
                    * 告诉服务器,我(当前请求)重哪里来?
                       *作用 :
                           1: 防盗链
                           2: 统计工作
      3:请求空行
         * 就是用来分割post请求的请求头和请求体的
      4:请求体(正文): 只有post请求方式才有请求体
          * 封装post请求消息的请求参数的

      Servlet的快速入门 :
               Servlet快速入门:
     1:创建JavaEE项目
     2:定义一个类,实现Servlet接口
     3:实现接口中的抽象方法
     4:配置Servlet(在web.xml文件中配置)

        执行原理:
     1:当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
     2:查找web.xml文件,是否有对应的<url-pattern>标签体内容.
     3:如果有,则再找到对应的<servlet-class>全类名
     4:tomcat会将字节码文件加载进内存,并且创建其对象
     5:调用其方法

   Servlet中的生命周期方法:
     1:被创建:执行init方法,只执行一次
         Servlet什么时候被创建
            可以设置Servlet的创建时机
              在<servlet>标签下配置:
                 1:第一次被访问时,创建
                   <load-on-startup>的值为负数
                 2:在服务器启动时创建
                    <load-on-startup>的值为0或正整数
     2:提供服务:执行service方法,执行多次
     3:执行destroy方法,只执行一次

*/

@WebServlet("/demo01")
public class Servletdemo01 implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("====================");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}
